Multi-level Virtual Machine Debugging Using the Java Platform Debugger Architecture
نویسندگان
چکیده
Debugging virtual machines (VMs) presents unique challenges, especially meta-circular VMs, which are written in the same language they implement. Making sense of runtime state for such VMs requires insight and interaction at multiple levels of abstraction simultaneously. For example, debugging a Java VM written in Java requires understanding execution state at the source code, bytecode and machine code levels. However, the standard debugging interface for Java, which has a platform-independent execution model, is itself platform-independent. By definition, such an interface provides no access to platform-specific details such as machine code state, stack and register values. Debuggers for low-level languages such as C and C++, on the other hand, have direct access only to low-level information from which they must synthesize higher-level views of execution state. An ideal debugger for a meta-circular VM would be a hybrid: one that uses standard platformindependent debugger interfaces but which also interacts with the execution environment in terms of low-level, platform-dependent state. This paper presents such a hybrid architecture for the meta-circular Maxine VM. This architecture adopts unchanged a standard debugging interface, the Java Platform Debugger Architecture (JPDA), in combination with the highly extensible NetBeans Integrated Development Environment. Using an extension point within the interface, additional machine-level information can be exchanged between a specialized server associated with the VM and plug-in extensions within NetBeans.
منابع مشابه
Seamless Thread and Execution Context Migration within a Java Virtual Machine Environment
This paper describes a mechanism for preserving the execution state of a Java application during the migration process between two hosts. By using the Java Platform Debugging Architecture (JPDA), this project aims to seamlessly migrate both the object and its point of execution to a destination host, without session interruption.
متن کاملThe HotSpot Serviceability Agent: An Out-of-Process High-Level Debugger for a JavaTM Virtual Machine
The HotSpotTM Serviceability Agent (SA) is a set of APIs for the Java programming language which model the state of Sun Microsystems’ JavaTM HotSpot Virtual Machine. Unlike most previous debugging systems for dynamic languages which assume a “cooperative” model in which the target process runs code to assist in the debugging process, the SA requires no code to be run in the target VM. Instead, ...
متن کاملJaVis: A UML-Based Visualization and Debugging Environment for Concurrent Java Programs
Debugging concurrent Java programs is a difficult task because of multiple control flows and inherent nondeterminism. It requires techniques not provided by traditional debuggers such as tracing, visualization, and automated error analysis. Therefore, we have developed the JaVis environment for visualizing and debugging concurrent Java programs. The information about a running program is collec...
متن کاملDebugging by Remote Reeection
Reeection in an object-oriented system allows the structure of objects and classes to be queried at run-time, thus enabling \meta-object" programming such as program debugging. Remote Reeection allows objects in one address space to reeect upon objects in a diierent address space. Used with a debugger, remote reeection makes available the full power of object-oriented reeection even when the ob...
متن کاملAutomated Debugging in Java Using OCL and JDI
Correctness constraints provide a foundation for automated debugging within object-oriented systems. This paper discusses a new approach to incorporating correctness constraints into Java development environments. Our approach uses the Object Constraint Language (“OCL”) as a specification language and the Java Debug Interface (“JDI”) as a verification API. OCL provides a standard language for e...
متن کامل